<?php
namespace catchAdmin\stock\excl;

use catchAdmin\stock\model\InventoryStatement;
use catchAdmin\stock\model\InventoryStatementSon;
use catcher\library\excel\ExcelContract;
use PhpOffice\PhpSpreadsheet\Style\Alignment;

class InventoryStatementExport implements ExcelContract
{
    protected $model;
    
    public function __construct()
    {
        $this->model = new InventoryStatement;
    }

    /**
     * 表头
     *
     * @time 2020年09月08日
     * @return array
     */
    public function headers(): array
    {
        return [
            '商品名称',
            '中文名称',
            '上月结转',
            '本月入库',
            '本月出库',
            '当前数目',
            'Good_Qty',
            'Hold_Qty',
            'NG_Qty',
            '统计时间',
        ];
    }

    /**
     * 处理数据
     *
     * @time 2020年09月08日
     * @throws \think\db\exception\DataNotFoundException
     * @throws \think\db\exception\DbException
     * @throws \think\db\exception\ModelNotFoundException
     * @return \think\Collection
     */
    public function sheets()
    {
        $statement_id = request()->param('statement_id');
        
        // 获取主表数据以获取统计时间
        //$statement = $this->model->where('id', $statement_id)->find();
        //$statement_datetime = $statement ? $statement['statement_datetime'] : '';
        
        $list = (new InventoryStatementSon)->where('statement_id', $statement_id)->select();

        $data = [];
        foreach ($list as $item) {
            $data[] = [
                $item['goods_name'],
                $item['goods_Cname'],
                $item['last_month_number'],
                $item['this_month_in_number'],
                $item['this_month_out_number'],
                $item['current_number'],
                $item['current_Good_Qty'],
                $item['current_Hold_Qty'],
                $item['current_NG_Qty'],
                $item['created_at'],
            ];
        }

        return $data;
    }

    /**
     * 设置开始行
     *
     * @time 2020年09月08日
     * @return int
     */
    public function setRow()
    {
        return 2;
    }

    public function setWidth()
    {
        return [
            "A"=>30, // 商品名称
            "B"=>20, // 中文名称
            "C"=>15, // 上月结转
            "D"=>15, // 本月入库
            "E"=>15, // 本月出库
            "F"=>15, // 当前数目
            "G"=>15, // Good_Qty
            "H"=>15, // Hold_Qty
            "I"=>15, // NG_Qty
            "J"=>20, // 统计时间
        ];
    }

    /**
     * 设置标题
     *
     * @time 2020年09月08日
     * @return array
     */
    public function setTitle()
    {
        return [
            'A1:J1', '库存盘点导出', Alignment::HORIZONTAL_CENTER
        ];
    }
} 